package com.browsesoft.htmlcomponent;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.w3c.dom.Element;

import com.browsesoft.ExtendElement;

public class HTMLFormAccessories extends HTMLBasicComponent {
	/**
	 * 表的名字
	 */
	private String tableName = "";

	/**
	 * 单子号
	 */
	private String id = "";

	/**
	 * 自己拥有的元素
	 */
	private Element element = null;

	/**
	 * 构造方法
	 * 
	 * @param parent
	 * @throws Exception
	 */
	public HTMLFormAccessories(HTMLBasicComponent parent) throws Exception {
		super(parent);
	}

	/*
	 * 初始化时 @param request @param e @throws Exception
	 */
	public void init(HttpServletRequest request, Element e) throws Exception {
		super.init(request, e);
		element = e;
		// 设置表单的名称
		this.setTableName();
		// 设置表单实例的ID
		this.setID();
	}

	/**
	 * 根据Model的内容更新需要处理的元素内容，在产生页面时要调用
	 * 
	 * @throws java.lang.Exception
	 */
	protected void updateElement() throws Exception {
		// 设置上传按钮的属性
		this.setButtonAction();
	}

	/**
	 * 处理用户请求，将需要Model处理的内容提交给Model，将请求的名字值对中的名字转为小写
	 * 
	 * @param request
	 *            客户端请求
	 * @throws java.lang.Exception
	 */
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		super.service(request, response);
		// 有ID号，说明是编辑
		if (request.getParameter("id") != null) {
			id = request.getParameter("id");
		}
	}

	/**
	 * 设置表单的名称
	 */
	public void setTableName() {
		tableName = this.parent.element.getAttribute("name");
	}

	/**
	 * 设置表单实例的ID
	 * 
	 * @throws Exception
	 */
	public void setID() throws Exception {
		id = (String) ((HTMLFormModel) parent.model).getAttributes().get("id");
	}

	/**
	 * 将上传时用到的参数设置到页面按钮动作中
	 */
	public void setButtonAction() {
		// 找到'上传图片'按钮
		Element e = (Element) ExtendElement.findElements(this.element,
				"accessories", "accessories").get(0);
		String s = e.getAttribute("onclick");
		s = s.replaceAll("tableName=", "tableName=" + tableName);
		s = s.replaceAll("id=", "id=" + id);
		e.setAttribute("onclick", s);
	}
}
